package algorithm.arrayAlgorithm;

/**
 * @ClassName: SubArrayRanges
 * @Description 2104. 子数组范围和
 * 给你一个整数数组 nums 。nums 中，子数组的 范围 是子数组中最大元素和最小元素的差值。
 * 返回 nums 中 所有 子数组范围的 和 。
 * 子数组是数组中一个连续 非空 的元素序列。
 * @Author skywingking
 * @Date 2022/3/4 11:27 下午
 **/
public class SubArrayRanges {
    public long subArrayRanges(int[] nums) {
        int n = nums.length;
        long ret = 0;
        for(int i = 0; i < n; i++){
            int minVal = Integer.MAX_VALUE,maxVal = Integer.MIN_VALUE;
            for(int j = i; j < n; j++){
                minVal = Math.min(minVal,nums[j]);
                maxVal = Math.max(maxVal,nums[j]);
                ret += maxVal - minVal;
            }
        }
        return ret;
    }
}